package br.com.senac.pi.modelo;

import br.com.senac.pi.interfaces.PIDataObject;
import br.com.senac.pi.util.FilesType;

/**
 * Exemplo de implementacao do modelo utilizando Fabricante de sorvete
 *
 */
public class Sorvete implements PIDataObject {

	/**
	 * Definicao do tipo do arquivo
	 */
	FilesType TYPE = FilesType.SORVETE;
	
	private Long id;
	private String sabor;
	private Long fabricante;
	private String nomeFabricante;
	
	public Long getId() {
		return id;
	}

	@Override
	public void setId(Long id) {
		this.id = id;
	}
	
	public String getSabor() {
		return sabor;
	}

	public void setSabor(String sabor) {
		this.sabor = sabor;
	}
	
	public Long getFabricante() {
		return fabricante;
	}

	public void setFabricante(Long fabricante) {
		this.fabricante = fabricante;
	}

	public String getNomeFabricante() {
		return nomeFabricante;
	}

	public void setNomeFabricante(String nomeFabricante) {
		this.nomeFabricante = nomeFabricante;
	}

	@Override
	public FilesType getFileType() {
		return TYPE;
	}

	@Override
	public String persistenceData() {
		return id + ";" + sabor + ";" + fabricante.toString();
	}

	@Override
	public void parseData(String data) {
		String [] dados = data.split(";");
		this.id = Long.parseLong(dados[0]);
		this.sabor = dados[1];
		this.fabricante = new Long(dados[2]);
	}
	
	public String toString() {
		String data = "[ID: " + id + ", " + "Nome: " + sabor + "," + "marca: " + fabricante + "]";
		return data;
	}
	
	public boolean compare(Sorvete sorvete) {
		if (fabricante == null) {
			return false;
		}
		
		if (sorvete.getId() != null && sorvete.getId().longValue() == id.intValue())
			return true;
		if (sorvete.getSabor() != null && (sorvete.getSabor().toUpperCase().equals(sabor.toUpperCase()) || sabor.toUpperCase().contains(sorvete.getSabor().toUpperCase())))
			return true;
		
		return false;
	}
	
	public String printData() {
		return "Sabor: " + sabor + " Fabricante: " + nomeFabricante;
	}

	@Override
	public String getDataSorting() {
		return sabor;
	}

}
